package de.fhin.mas.ontology;

import jade.content.Predicate;

/**
 * Die Containerklasse für ein <tt>SearchableObject</tt> und seine dazugehörige
 * <tt>StorageLocation</tt>.<br>
 * <br>
 * Diese implementiert das <tt>Predicate</tt> Interface und hat daher einen
 * "Aussagencharakter". Dadurch kann sie mit dem SL Codec in einen String
 * umgewandelt werden,mit dem dann der Content einer <tt>ACLMessage</tt> befüllt
 * werden kann.
 * 
 * @author Thomas Schläfer
 * 
 */
public class SearchableObjectData implements Predicate {

	/**
	 * 
	 */
	private static final long serialVersionUID = 1912423449123297335L;

	private SearchableObject searchObject;

	private Location location;

	/**
	 * Der Default Konstruktor, den JADE bei der Instantiierung des Objekts aus
	 * dem Content einer ACLMessage benutzt. Philosophie ist anscheinend:
	 * erstmal den Default Konstruktor aufrufen, und dann die Attribute mittels
	 * der Setter belegen.
	 */
	public SearchableObjectData() {

	}

	/**
	 * Alternativer Konstruktor, wenn ein SearchObject schon vorhanden ist
	 * 
	 * @param searchObject
	 *            SearchableObject das hier eingekapselt werden soll
	 * @param storageLocation
	 *            Der Lagerort wo das Objekt abgelegt werden soll, sobald es
	 *            aufgefunden wurde
	 */
	public SearchableObjectData(SearchableObject searchObject, Location location) {
		this.searchObject = searchObject;
		this.location = location;
	}

	/**
	 * Legt das Suchobjekt fest
	 * 
	 * @param searchObject
	 *            das zu suchende <tt>SearchableObject</tt>
	 */
	public void setSearchObject(SearchableObject searchObject) {
		this.searchObject = searchObject;
	}

	/**
	 * Gibt das Suchobjekt zurück
	 * 
	 * @return das zu suchende <tt>SearchableObject</tt>
	 */
	public SearchableObject getSearchObject() {
		return searchObject;
	}

	public void setLocation(Location location) {
		this.location = location;
	}

	public Location getLocation() {
		return location;
	}
}
